#include <iostream>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>

using namespace std;
int main()
{
    int n = mkfifo("pipe", 0664); // 创建管道
    if (n == -1)
    {
        perror("mkfifo error");
        exit(1);
    }

    int fd = open("pipe", O_RDONLY | O_CREAT); // 打开管道文件，以读
    if (fd < 0)
    {
        perror("open pipe error");
        exit(1);
    }

    cout << "读端打开成功" << endl;//读管道只有等写端打开才会，打开
    char buffer[1024] = {0};

    int m = read(fd, buffer, sizeof(buffer));
    if (m < 0)
    {
        perror("read err");
        exit(1);
    }
    else if (m == 0)
    {
        return 0;
    }
    else
    {
        cout << buffer << endl;
    }

    unlink("pipe");

    return 0;
}